Model-driven software development (MDSD) is the automatic (or semi-automatic) generation of software systems from models across multiple stages. This process can entail the step-wise refinement of models, where the last development stage results in the generation of executable source code. This last development step falls into the category of model-to-text transformations and is not limited to source code generation. Generally the output is string-based and any form of text can be possible. The model transformations preceding the last development step are referred to as model-to-model transformations.
A model transformation can be executed through a transformation engine, which understands and processes a transformation program, being an instance of a corresponding transformation language. A transformation program defines how an output (e.g. source code of a particular programming language) is constructed depending on model data used as input. To understand which output elements were generated by which rule in the transformation program on the basis of which model input elements, traceability data is employed between the generated output, the transformation program, and the input models.
Traceability is the degree to which a relationship can be established between two or more products of the development process, in particular, products having a predecessor-successor or master-subordinate relationship to one another. For example, the degree to which the requirements and design of a given software component match. Traceability data in MDSD can be understood as the runtime footprint of model transformation execution. Trace links provide this kind of information by associating input and output elements with respect to the execution of a certain transformation rules.